# 01案例-需求：
# 有两个参数：手机号和密码
# 手机号的测试数据有三个，密码的测试数据也有三个
# 最后组装成元组列表类型的数据作为最终的测试数据: [(手机号1,密码1),(手机号2,密码2),...]
# 总共需要几种场景的测试数据
phone_list = ['13880001111', '13999992222', '150999933331']
password_list = ['123456', '456def', 'aaaaaa']

# 元组列表类型的数据
# 定义空列表
list = []
# 遍历手机号
for i in phone_list:
    # print(i)   #13880001111
    for j in password_list:
        # print(j)   #123456  456def
        # print(i,j)          # (13880001111,123456),(13880001111,456def)
        tup = (i, j)
        # print(tup)
        list.append(tup)
        # print(list)
print(list)

# 列表推导式：Python中构造列表数据的一种简洁方法
# 语法1：[表达式 for 变量 in 可迭代对象]
# 案例：从1~10中获取每个整数的平方，保存到列表中
# 方式1：for循环
res1 = []
for i in range(1, 11):
    res1.append(i ** 2)
print(res1)
# 方式2：列表推导式
res2 = [i ** 2 for i in range(1, 11)]
print(res2)

# 语法2：[表达式 for 变量 in 可迭代对象 if 条件判断]
# 案例：从1~10中获取每个整数偶数的平方，保存到列表中
res3 = [i ** 2 for i in range(1, 11) if i % 2 == 0]
print(res3)
#
# # 语法3：[表达式 for 变量 in 可迭代对象 for 变量 in 可迭代对象]
result1 = [(i, j) for i in phone_list for j in password_list]
print(result1)


# 02-函数-定义函数
def demo():
    """我是注释"""
    print("我是函数")


# 调用函数
demo()

# 03-函数的参数
# 定义字典(非空)元素的列表
login_data = [
    {"username": "13488888888", "password": "123456"},
    {"username": "", "password": "123456"},
    {"username": "13800000001", "password": ""},
    {"username": "13800000001", "password": "123"}
]


# 思路：数据和业务分离的思路
# 1.先实现业务功能（函数）
def login(phone, pwd):
    """
    登录判断函数
    :param phone: 手机号
    :param pwd: 密码
    :return: 无
    """
    if phone == "13488888888" and pwd == "123456":
        print("登录成功")
    else:
        print("登录失败")


# 调用函数
login("13488888888", "123456")

# 04-再构造数据进行验证
num = 1  # 计数器
for i in login_data:
    # 获取账号密码
    phone = i.get("username")
    pwd = i.get("password")
    print(f"第{num}次测试")
    # 调用函数
    login(phone, pwd)
    num += 1  # 调用一次计数器增1

    # 案例演示1
    # 定义函数


def login(phone):
    """
    模拟登录
    :param phone: 验证手机号
    :return: 返回账号的结果
    """
    # 模拟登录
    if phone == "13488888888":
        return "账号正确"  # 判断之后的结果返回给调用者
    else:
        return "账号错误"


# 调用函数
# a = login("13800000001")  # 返回的结果找变量接收
# print(a)  # 想看结果就直接打印出来
# print(login("13488888888"))
# 调用函数断言结果
assert "账号错误" == login("13800000001")  # 预期结果 == 实际结果
assert "正确" in login("13488888888")  # 预期结果 in 实际结果


# 案例演示2
# 需求：设计一个函数用于获取两个数中的较大数，数据来自于函数的参数，最后返回较大值
# 1.定义函数
def get_max(num1, num2):
    """获取较大值函数"""
    # 有两个数字：直接通过参数传递
    # 判断大小关系
    if num1 > num2:  # num1大于num2 返回num1
        # 返回较大值
        return num1
    else:  # num1小于等于num2 返回num2
        return num2


# 2.调用函数
num = get_max(10, 20)
print(num)
print(get_max(10, 2))
